package cn.edu.nuc.bre.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import cn.edu.nuc.bre.dao.QueryMapper;
import cn.edu.nuc.bre.dao.TransTypeMapper;
import cn.edu.nuc.bre.dto.QueryHandler;
import cn.edu.nuc.bre.entity.TransType;
import cn.edu.nuc.bre.service.interfaces.TransTypeService;
import cn.edu.nuc.bre.util.PageInfo;

/**
 * 事务类型业务逻辑实现类
 * 
 * @author 郑温冬
 * 
 */
@Service
public class TransTypeServiceImpl implements TransTypeService {

	/**
	 * 事务类型DAO对象
	 */
	@Autowired
	private TransTypeMapper ttm;

	/**
	 * 查询包装器
	 */
	@Autowired
	private QueryMapper qm;

	/**
	 * 新增事务类型
	 */
	@Override
	public boolean add(TransType one) {
		one.setTtstate(1);
		if (ttm.insertSelective(one) == 1) {
			return true;
		} 
		return false;
	}

	/**
	 * 删除事务类型（并不是真正的删除，而是禁用）
	 */
	@Override
	public boolean delete(Integer ttypeid) {
		if (ttypeid != null) {
			TransType one = new TransType();
			one.setTtypeid(ttypeid);
			one.setTtstate(0); // 0表示删除
			if (ttm.updateByPrimaryKeySelective(one) == 1) {
				return true;
			} else {
				System.out.println("数据库[删除公共]操作失败...");
			}
		} else {
			System.out.println("删除事务类型id为空...");
		}
		return false;
	}

	/**
	 * 按id查询事务类型
	 */
	@Override
	public TransType findById(Integer ttypeid) {
		if (ttypeid != null) {
			return ttm.selectByPrimaryKey(ttypeid);
		} else {
			System.out.println("ttypeid为空");
			return null;
		}
	}

	/**
	 * 分页查询事务类型
	 */
	@Override
	public PageInfo<TransType> findByQueryHandler(QueryHandler queryHandler) {

		List<TransType> list = qm.queryTransType(queryHandler);
		long rootSize = 0;
		int nowPage = 1;
		int pageSize = 5;
		if (queryHandler == null || queryHandler.getLimitSentence() == null) {// 没分页
			if (list != null) {
				rootSize = list.size();
			}
		} else {
			nowPage = queryHandler.getPageNumber();
			pageSize = queryHandler.getPageSize();
			rootSize = qm.findLastRows();
		}
		PageInfo<TransType> pi = new PageInfo<TransType>((int) rootSize, nowPage, pageSize);
		pi.setBasePageList(list);
		return pi;
	}
	
	/**
	 * 查询全部事务类型（未禁用）
	 */
	@Override
	public List<TransType> findAll() {
		
		// 设置查询条件查询明细(要求必须是未删除的明细，每页查询5条记录)
		QueryHandler queryHandler = QueryHandler.creat().andColumnMark("ttstate", "!=", "0");
		queryHandler.OrderByDESC("ttypeid");
		queryHandler.set(); //查询之前要执行set方法生成查询用的sql语句
		
		//返回查询结果
		return qm.queryTransType(queryHandler);
	}
}
